package com.example.service;

import java.math.BigDecimal;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.example.common.R;
import com.example.model.UserAddressDTO;
import com.example.model.req.AddEmployeeReq;
import com.example.model.req.AdminUserLoginReq;
import com.example.model.req.UpdateFavoriteReq;
import com.example.model.req.UserLoginReq;
import com.example.model.resp.ListAdminEmployeeResp;
import com.example.model.resp.ListEmloyeeInfoResp;
import com.example.model.resp.ListEmployeeInMiniResp;
import com.example.model.resp.ListFavoriteEmployeeResp;
import com.example.model.resp.UserInfoResp;

public interface UserService {
    R<String> userLogin(UserLoginReq userLoginReq);

    R<String> adminUserLogin(AdminUserLoginReq adminUserLoginReq);

    R<String> addEmployee(AddEmployeeReq addEmployeeReq);

    R<List<ListEmployeeInMiniResp>> listEmployee(Integer serviceId, HttpServletRequest request);

    R<String> updateFavorite(UpdateFavoriteReq updateFavoriteReq, HttpServletRequest request);

    R<List<ListFavoriteEmployeeResp>> getFavoriteList(Integer userId);

    R<UserInfoResp> userDetail(HttpServletRequest request);

    R<String> updateAddress(HttpServletRequest request, Integer oldAddressId, Integer newAddressId);

    R<List<UserAddressDTO>> getAddressListByUserId(HttpServletRequest httpServletRequest);

    R<String> addNewAddress(String newAddress, HttpServletRequest request);

    R<String> updateAvatar(String avatar, HttpServletRequest request);

    R<Boolean> updateGender(boolean gender, HttpServletRequest request);

    R<ListEmloyeeInfoResp> employeeDetail(Integer employeeId);

    R<List<ListAdminEmployeeResp>> listAdminEmployee(Integer pageSize, Integer currentPage);

    R<String> chargeBalance(BigDecimal chargeVal, HttpServletRequest request);

    R<BigDecimal> queryBalance(HttpServletRequest request);
}
